﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace Beeldbankmvc.Models
{
    public class PageTextRepository
    {
        BeeldbankLinqDataContext db = new BeeldbankLinqDataContext();

        public IEnumerable<PageTextModel> getPageTextAll()
        {
            return from o in FindAll()
                   orderby o.Titel, o.Publicatie
                   select new PageTextModel
                   {
                       Id = o.Id,
                       Url = o.Url,
                       Title = o.Titel,
                       Bodytext = o.BodyTekst,
                       Publication = o.Publicatie,
                   };
        }

        public PageTextModel FindOne(int id)
        {
            PageTextModel pageTextModel = new PageTextModel();

            BEELDBANK_PAGINA_TEKST o = FindAll().Where(p => p.Id == id).First();
            if (o != null)
            {
                pageTextModel.Id = o.Id;
                pageTextModel.Url = o.Url;
                pageTextModel.Title = o.Titel;
                pageTextModel.Bodytext = o.BodyTekst;
                pageTextModel.Publication = o.Publicatie;
            }
            return pageTextModel;
        }

        public PageTextModel FindOne(string url, string publication)
        {
            PageTextModel pageTextModel = new PageTextModel();

            BEELDBANK_PAGINA_TEKST o = FindAll().SingleOrDefault(m => m.Url.Equals(url) && m.Publicatie.Equals(publication));
            if (o != null)
            {
                pageTextModel.Id = o.Id;
                pageTextModel.Url = o.Url;
                pageTextModel.Title = o.Titel;
                pageTextModel.Bodytext = o.BodyTekst;
                pageTextModel.Publication = o.Publicatie;
            }
            return pageTextModel;
        }

        public void Create(PageTextModel pageTextModel)
        {
            BEELDBANK_PAGINA_TEKST o = new BEELDBANK_PAGINA_TEKST();
            if (o != null)
            {
                o.Id = pageTextModel.Id;
                o.Url = pageTextModel.Url;
                o.Titel = pageTextModel.Title;
                o.BodyTekst = pageTextModel.Bodytext;
                o.Publicatie = pageTextModel.Publication;
            }
            db.BEELDBANK_PAGINA_TEKSTs.InsertOnSubmit(o);
        }

        public void Update(PageTextModel pageTextModel)
        {
            BEELDBANK_PAGINA_TEKST o = FindAll().Where(p => p.Id == pageTextModel.Id).First();
            if (o != null)
            {
                o.Id = pageTextModel.Id;
                o.Url = pageTextModel.Url;
                o.Titel = pageTextModel.Title;
                o.BodyTekst = pageTextModel.Bodytext;
                o.Publicatie = pageTextModel.Publication;
            }
        }

        public void Delete(int id)
        {
            BEELDBANK_PAGINA_TEKST o = FindAll().Where(p => p.Id == id).First();

            db.BEELDBANK_PAGINA_TEKSTs.DeleteOnSubmit(o);
        }

        private IQueryable<BEELDBANK_PAGINA_TEKST> FindAll()
        {
            return db.BEELDBANK_PAGINA_TEKSTs;
        }

        public void Save()
        {
            db.SubmitChanges();
        }
    }
}